#include "Prerequis.h"

/******************************************************************************
 *
 * Définition de la classe Prerequis
 *
 *****************************************************************************/

/** Constructeur par défaut.

 * Permet de construire un prérequis sur les traits, avec des bornes
 * inférieure et suppérieure.
 *
 * @param trait numéro du trait (par défaut 0, càd Force).
 * @param min valeur minimale (par défaut 3).
 * @param max valeur maximale (par défaut 26, pour ne pas avoir de max).
 */
Prerequis::Prerequis(const unsigned int& trait, const unsigned int& min,
		     const unsigned int& max)
  : Trait( trait ), Min( min ), Max( max )
{}

/**
 * Destructeur, ne fait rien de spécial.
 */
Prerequis::~Prerequis()
{}

/**
 * Vérifie si les traits donnés sont correct compte tenu de l'instance
 * courante.
 *
 * @param tab tableau des traits.
 * @return StatusCode \e true si OK, \e false sinon. Dans ce dernier
 * cas, Valeur donne le trait qui empêche la création dans valeur(),
 * la borne dans code() et un message.
 */
StatusCode Prerequis::estOK(unsigned int tab[7]) const
{
  if ( tab[ Trait ] < Min )
    return StatusCode( false, Trait, Min, "Valeur insuffisante" );
  else if ( tab[ Trait ] > Max ) 
    return StatusCode( false, Trait, Max, "Valeur trop grande" );
  else
    return StatusCode( true );
}
